<?php
// +----------------------------------------------------------------------
// | 幕小铺
// +----------------------------------------------------------------------
// | 版权所有 2016~2020 幕小铺科技（大连）有限公司
// +----------------------------------------------------------------------
// | 2020/06/24
// +----------------------------------------------------------------------

namespace app\erp\home;
use app\common\controller\AuthCheck;

/**
 * 退换货管理
 * @package app\cms\admin
 */
class Returnandexchange extends AuthCheck{
    /**
     * 退货列表
     * @author dou<51779987@qq.com>
     * @return json_out(code, message, data)
     */
    public function index(){
        //参数接收
        $params 		    = $this->getParams(0);//0 get 1 post
        $user_id    	    = intval(isset($params["user_id"]) ? $params["user_id"] : 0);//操作用户ID

        $order_id    	    = isset($params["order_id"]) ? $params["order_id"] : '';
        $uid    	        = isset($params["rc_uid"]) ? $params["rc_uid"] : '';
        $type    	        = intval(isset($params["type"]) ? $params["type"] : 0);
        $return_status      = isset($params["return_status"]) ? $params["return_status"] : '';
        $return_order_code  = isset($params["return_order_code"]) ? $params["return_order_code"] : '';
        //数据验证
        $Validate = validate('Returnandexchange', 'validate');
        if( !$Validate -> scene('returnandexchange_index') -> check($params) ){
            json_out(-1001, $Validate -> getError(), []);//验证失败
        }

        //逻辑处理
        $list = controller('Returnandexchangelogic', 'logic') -> index($user_id, $order_id, $uid, $type, $return_status, $return_order_code);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], []);
        }
    }

    /**
     * 添加退货
     * @param order_id 	                int     订单id
     * @param type 		                int     类型 1退货 2换货
     * @param reason 		            string  退货理由
     * @param content 		            text    问题描述
     * @param img_url1 	                string  图片凭证1
     * @param img_url2 	                string  图片凭证2
     * @param img_url3 	                string  图片凭证3
     * @param create_time 		        int     创建时间
     * @param update_time 		        int     编辑时间
     * @param uid 		                int     添加人
     * @param return_order_code 		int     退换货订单号
     * @param return_status 		    int     订单状态 0申请中 1已撤回 2已完成
     * @param sku_id 		            int     规格id
     * @param num 		                int     数量
     * @param create_time 		        int     创建时间
     * @param update_time 		        int     编辑时间
     * @author dou<51779987@qq.com>
     * @return json_out(code, message, (int)id)
     */
    public function add(){
        //参数接收
        $params 		    = $this->getParams(1);//0 get 1 post
        $user_id    	    = intval(isset($params["user_id"]) ? $params["user_id"] : 0);//操作用户ID
        $order_id    	    = intval(isset($params["order_id"]) ? $params["order_id"] : 0);
        $type    	        = intval(isset($params["type"]) ? $params["type"] : 0);
        $reason    		    = isset($params["reason"]) ? $params["reason"] : '';
        $content    		= isset($params["content"]) ? $params["content"] : '';
        $img_url1    		= isset($params["img_url1"]) ? $params["img_url1"] : '';
        $img_url2    		= isset($params["img_url2"]) ? $params["img_url2"] : '';
        $img_url3    		= isset($params["img_url3"]) ? $params["img_url3"] : '';
        $return_status      = intval(isset($params["return_status"]) ? $params["return_status"] : 0);
        $sku_id    	        = intval(isset($params["sku_id"]) ? $params["sku_id"] : 0);
        $num    	        = intval(isset($params["num"]) ? $params["num"] : 0);

        //获取调拨单号code
        $code_count = model('ErpReturnandexchange') ->count();
        if($type == 1){
            $return_order_code = $params['return_order_code'] = 'R'.date('Ymd').(str_pad(($code_count+1),3,"0",STR_PAD_LEFT));
        }elseif ($type == 2){
            $return_order_code = $params['return_order_code'] = 'C'.date('Ymd').(str_pad(($code_count+1),3,"0",STR_PAD_LEFT));
        }
        //数据验证
        $Validate = validate('Returnandexchange', 'validate');
        if( !$Validate -> scene('returnandexchange_add') -> check($params) ){
            json_out(-1001, $Validate -> getError());//验证失败
        }
        //验证退换数量不大于已购买数量
        $allow_num = controller('Returnandexchangelogic', 'logic')->checkUpNum($user_id,$order_id, $sku_id);
        if($allow_num['data'] < $num){
            json_out(-1001, '超出允许退换数量');//验证失败
        }else{}
        //逻辑处理
        $list = controller('Returnandexchangelogic', 'logic') -> add($user_id, $order_id, $type, $reason, $content, $img_url1, $img_url2, $img_url3, $return_order_code, $return_status,$sku_id,$num);
        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], '新增成功');
        }else{
            json_out($list['code'], $list['message']);
        }
    }

    /**
     * 退回订单详情
     */
    public function detail(){
        //参数接收
        $params 		    = $this->getParams(0);//0 get 1 post
        $user_id    	    = intval(isset($params["user_id"]) ? $params["user_id"] : 0);//操作用户ID
        $id = $params["id"] = intval(isset($params["returnandexchange_id"]) ? $params["returnandexchange_id"] : 0);
        //数据验证
        $Validate = validate('Returnandexchange', 'validate');
        if( !$Validate -> scene('returnandexchange_detail') -> check($params) ){
            json_out(-1001, $Validate -> getError(), []);//验证失败
        }

        //逻辑处理
        $list = controller('Returnandexchangelogic', 'logic') -> detail($user_id, $id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], $list['message'], $list['data']);
        }else{
            json_out($list['code'], $list['message'], []);
        }
    }

    /**
     * 撤回申请
     * @param int $id
     * @author dou<51779987@qq.com>
     * @return bool
     */
    public function recall()
    {
        //参数接收
        $params 		    = $this->getParams(0);//0 get 1 post
        $user_id    	    = intval(isset($params["user_id"]) ? $params["user_id"] : 0);//操作用户ID
        $id = $params["id"] = intval(isset($params["returnandexchange_id"]) ? $params["returnandexchange_id"] : 0);
        $return_status=$params["return_status"]= intval(isset($params["return_status"]) ? $params["return_status"] :1);
        //数据验证
        $Validate = validate('Returnandexchange', 'validate');
        if( !$Validate -> scene('returnandexchange_recall') -> check($params) ){
            json_out(-1001, $Validate -> getError());//验证失败
        }

        //逻辑处理
        $list = controller('Returnandexchangelogic', 'logic') -> editStatus($user_id, $id, $return_status);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], '撤回成功');
        }else{
            json_out($list['code'], $list['message']);
        }
    }
    /**
     * 删除申请
     * @param int $id
     * @author dou<51779987@qq.com>
     * @return bool
     */
    public function delete(){
        //参数接收
        $params 		= $this->getParams(0);//0 get 1 post
        $user_id    	= intval(isset($params["user_id"]) ? $params["user_id"] : 0);//操作用户ID
        $id = $params["id"] = intval(isset($params["returnandexchange_id"]) ? $params["returnandexchange_id"] : 0);

        //数据验证
        $Validate = validate('Returnandexchange', 'validate');
        if( !$Validate -> scene('returnandexchange_delete') -> check($params) ){
            json_out(-1001, $Validate -> getError());//验证失败
        }

        //逻辑处理
        $list = controller('Returnandexchangelogic', 'logic') -> delete($user_id, $id);

        //数据返回
        if($list['code'] == 200){
            json_out($list['code'], '删除成功');
        }else{
            json_out($list['code'], $list['message']);
        }
    }

}